home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / misc / math / MathFX_src.lha / fxvpor.c < prev    next >
C/C++ Source or Header  |  1995-12-20  |  1KB  |  41 lines

  1. /* Sets the edges of the viewport to the specified normalized subpage */
  2. /* coordinates */
  3.  
  4. #include "mathfx.h"
  5.  
  6. void fxvpor(xmin, xmax, ymin, ymax)
  7. float xmin, xmax, ymin, ymax;
  8. {
  9.     float spdxmi, spdxma, spdymi, spdyma;
  10.     float vpdxmi, vpdxma, vpdymi, vpdyma;
  11.     int vppxmi, vppxma, vppymi, vppyma;
  12.     
  13.     int nx, ny, cs;
  14.  
  15.     int level;
  16.  
  17.     glev(&level);
  18.     if (level < 1) fatal("Please call FXSTAR before calling FXVPOR.");
  19.     if((xmin>=xmax)||(ymin>=ymax)||(xmin<0.)||
  20.        (ymin<0.)||(xmax>1.)||(ymax>1.))
  21.         fatal("Invalid limits in PLSVPA.");
  22.  
  23.     gsub(&nx,&ny,&cs);
  24.     if ((cs<=0) || (cs>(nx*ny)))
  25.         fatal("Please call FXADV or FXENV to go to a subpage.");
  26.     gspd(&spdxmi,&spdxma,&spdymi,&spdyma);
  27.     vpdxmi = spdxmi + (spdxma - spdxmi) * xmin;
  28.     vpdxma = spdxmi + (spdxma - spdxmi) * xmax;
  29.     vpdymi = spdymi + (spdyma - spdymi) * ymin;
  30.     vpdyma = spdymi + (spdyma - spdymi) * ymax;
  31.     svpd(vpdxmi,vpdxma,vpdymi,vpdyma);
  32.  
  33.     vppxmi = dcpcx(vpdxmi);
  34.     vppxma = dcpcx(vpdxma);
  35.     vppymi = dcpcy(vpdymi);
  36.     vppyma = dcpcy(vpdyma);
  37.     svpp(vppxmi,vppxma,vppymi,vppyma);
  38.     sclp(vppxmi,vppxma,vppymi,vppyma);
  39.     slev(2);
  40. }
  41.